package com.enzoism.springboot.dive.scene3;

import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Scene3Test {
    /**
     * 场景三：lambda对排序的影响
     */
    public static void main(String[] args) {
        List<String> lists = Arrays.asList("peter", "anna", "mike", "xenia");
        // 1、 原始方法
        最原始的排序方法(lists);
        // 2、lambda方法
        lambda表达式一(lists);
        lambda表达式二(lists);
        lambda表达式三(lists);
    }

    private static void 最原始的排序方法(List<String> lists) {
        Collections.sort(lists, new Comparator<String>() {
            @Override
            public int compare(String a, String b) {
                return b.compareTo(a);
            }
        });
    }

    // Java8中你就没必要使用这种传统的匿名对象的方式了，Java8提供了更简洁的语法，lambda表达式
    private static void lambda表达式一(List<String> lists) {
        Collections.sort(lists, (String a, String b) -> {
            return b.compareTo(a);
        });
    }

    // 还可以更简单：省略{return XXX}
    private static void lambda表达式二(List<String> lists) {
        Collections.sort(lists, (String a, String b) -> b.compareTo(a));
    }

    // 还可以更简单：直接使用List的排序
    private static void lambda表达式三(List<String> lists) {
        lists.sort((a, b) -> b.compareTo(a));
    }

}
